#include "Case.h"

#include <iostream>
using namespace std;

#ifndef GRILLE_H
#define GRILLE_H
class Grille {

private:
    char **grille;
    int nLignes;
    int nColonnes;

public:

    Grille(int nLignes, int nColonnes) : nLignes(nLignes), nColonnes(nColonnes) {
        grille = new char*[nLignes];
        for (int i = 0; i < nLignes; i++) {
            grille[i] = new char[nColonnes];
            for (int j = 0; j < nColonnes; j++) {
                grille[i][j] = ' ';
            }
        }
    }

    virtual ~Grille() {

        if (grille!=NULL)
        {
            for (int var=0; var < nLignes ; var++)
            {
                if(grille[var]!=NULL)
                {
                    delete[] grille[var];
                    grille[var]=NULL;
                }
            }
            delete[] grille;
        }
    }

    Case getCase(int l, int c);

    void setValeur(int l, int c, char v);

    int getNLignes() const {
        return nLignes;
    }

    void setNLignes(int nLignes) {
        Grille::nLignes = nLignes;
    }

    int getNColonnes() const {
        return nColonnes;
    }

    void setNColonnes(int nColonnes) {
        Grille::nColonnes = nColonnes;
    }


    bool estCarree();
    bool ligneNumeroGagnante(int numLigne,char c);
    bool colonneNumeroGagnante(int numColonne, char c);
    bool diagHautGaucheGagnante(char c);
    bool diagHautDroiteGagnante(char c);
    bool gagne(char c);
    bool xGagne();
    bool oGagne();

    char getValeur(int l, int c);
};

#endif